home *** CD-ROM | disk | FTP | other *** search
-
-
-
- section "Recognizer",code
-
- incdir "includes:"
- include "asm:datamaster.library/datamaster.i"
- include "asm:datamaster.library/datamaster_lib.i"
-
- ;EXEC
- incdir "includes:"
- include "exec/exec_lib.i"
- include "exec/exec.i"
-
- RECOHEADER reco
- reco: dc.l DMR_DMVersion,2
- dc.l DMR_Version,1<<16+2
- dc.l DMR_SubTypesTable,CheckTable
- dc.l DMR_Name,exename
- dc.l DMR_Descr,exeDescr
- dc.l DMR_Flags,RECOF_CheckData+RECOF_CheckPatt
- dc.l DMR_Class,DMCLASSF_SYSTEM
- dc.l DMR_Pri,PRI_FREQUENT
- dc.l TAG_END
-
-
- prog_c:
- lib_c:
- dev_c:
- move.l (a0),d1
- cmp.l #$3f3,d1
- beq.s .ok
- moveq #0,d0
- rts
- .ok: move.l a0,a1
- cmp.l #512,d0
- blo.s .ok2
- move.l #512,d0 ;d0= min(d0,512)
- .ok2: lsr.l #1,d0 ;/2
- .loop: move.w (a0)+,d1
- cmp.w #RTC_MATCHWORD,d1
- beq.s .found
- dbra d0,.loop
- bra.s .end0
-
- ;I don't check for the validity of the "magic" APTR after RTC_MATCHWORD
- ;but it's Ok anyway.
-
- .found:
- lea -2(a0),a0
- move.b RT_TYPE(a0),d0
-
- lea lib_n(pc),a1
- cmp.b #NT_LIBRARY,d0
- beq.s .end
-
- lea dev_n(pc),a1
- cmp.b #NT_DEVICE,d0
- beq.s .end
-
- .end0: lea exename(pc),a1
-
- .end: move.l a1,d0
- rts
-
- exeDescr:
- dc.b "Progs,libs,handlers etc...!",0
- exename:
- dc.b "Executable",0
-
- dev_p: dc.b "*."
- dev_n: dc.b "Device",0,$ff
-
- lib_p: dc.b "*."
- lib_n: dc.b "Library",0,$ff
-
-
- even
-
-
- CheckTable:
- dc.l prog_c,-1,exename
- dc.l lib_c,lib_p,lib_n
- dc.l dev_c,dev_p,dev_n
- dc.l 0,0,0
-
-